#pragma once


#include <iostream>


using namespace System;
using namespace System::Runtime::InteropServices;

#pragma unmanaged  
enum UIPageType
{
	UIPAGE_AUTH = 0,
	UIPAGE_USER = 1,
	UIPAGE_LOGIN = 2,
	UIPAGE_PT = 3,
	UIPAGE_START = 4,
	UIPAGE_JOIN = 5,
	UIPAGE_MEETING = 6,
};

enum UIApiType
{
	UIAPI_SHARE = 0,
	UIAPI_VIDEO = 1,
	UIAPI_AUDIO = 2,
};

//https://msdn.microsoft.com/en-us/library/367eeye0.aspx
//https://msdn.microsoft.com/en-us/library/367eeye0.aspx
//http://stackoverflow.com/questions/6507705/callbacks-from-c-back-to-c-sharp
//https://www.codeproject.com/Questions/184183/Unmanaged-c-to-managed-c-dll-calls-passing-strings

typedef int(__stdcall *AUTHCB)(int, int);

typedef int(__stdcall *CB_SHOWSTATUS)(int, const wchar_t* status_str);
typedef int(__stdcall *CB_CLEANUPUSERLIST)();
typedef int(__stdcall *CB_SWITCHUIPAGEBYTYPE)(int);
typedef int(__stdcall *CB_UPDATEUSERLIST)(int i,const wchar_t*uname, const wchar_t*uid, bool);


typedef int(__stdcall *PREMEETINGCB)(int, int);

class TheCallBacks {
public:
	CB_SHOWSTATUS ShowStatus;
	CB_CLEANUPUSERLIST CleanUpUserList;
	CB_SWITCHUIPAGEBYTYPE SwitchUIPageByType;
	CB_UPDATEUSERLIST UpdateUserList;
};

